package com.bsj.travel.def.common.DTO.mqtt.ota.down;

import com.bsj.travel.def.common.VO.OtaUpgradeVO;
import lombok.Data;

import java.util.Map;

/**
 * @author yinhao
 * @version 1.0
 * @description 用于HTTP下载的OTA信息.参考https://help.aliyun.com/zh/iot/user-guide/ota-update?spm=a2c4g.11186623.0.i199#pushfirmware
 * @date 2024/2/22
 */
@Data
public class HttpOtaInfo {

    /**
     * 升级包文件大小，单位：字节。OTA升级包中仅有一个升级包文件时，包含该参数
     */
    private Long size;
    /**
     * 设备升级包的版本信息。
     */
    private String version;
    /**
     * 仅当升级包类型为差分时，消息包含此参数。
     * 取值为1，表示仅包含新版本升级包与之前版本的差异部分，需要设备进行差分还原
     */
    private Long isDiff;
    /**
     * 升级包在对象存储（OSS）上的存储地址。
     */
    private String url;
    /**
     * 当签名方法为MD5时，除了会给sign赋值外还会给md5赋值。OTA升级包中仅有一个升级包文件时，包含该参数。
     */
    private String md5;
    /**
     * OTA升级包文件安全升级后的签名。仅当OTA升级包开启安全升级功能，才有此参数。
     */
    private String digestsign;
    /**
     * OTA升级包文件的签名
     */
    private String sign;
    /**
     * 签名方法。取值：
     * SHA256
     * MD5
     */
    private String signMethod;
    /**
     * 升级包所属的模块名。
     * -说明:
     *      模块名为default时，物联网平台不下发module参数。
     */
    private String module;
    /**
     * 升级批次标签列表和推送给设备的自定义信息。
     * _package_udi表示自定义信息的字段。
     * 单个标签格式："key":"value"。
     */
    private Map<String, Object> extData;

    public void fillData(OtaUpgradeVO vo) {
        this.size = 0L;
        this.version = vo.getVersion();
        this.url = vo.getUrl();
    }
}
